Cookie 是網頁中很常用到的東西,網頁連線中 Client 與 Server 不會持續性的連線,網頁資料傳輸完畢後,連線就斷了。因此,如果在這個網頁中向伺服器請求另一個網頁資料,對於伺服器來說,等於是一個新的用戶來請求資料。
舉個例子,我想先滑一下 IG 然後在 IG 上發限時動態。
這樣的流程是在沒有 Cookie 的狀態下,可能的使用者操作。因為所有的操作都等於心使用者的操作,所以前一次的登入結果不會帶到下一次的頁面中。
所以要來說說開發網頁最好的夥伴 Cookie。Cookie 可以想成是一個 .txt
檔,它用純文字記錄了一些資料,例如:購物車內容、登入狀態、瀏覽項目...之類的。
要製作餅乾要先知道三個必要的東西:
沒錯,就算是虛擬的餅乾,還是有保存期限的。如果保存期限過了,則該 Cookie 等於失效。對了,Cookie 的賞味期限是用秒來算的哦(ゝ∀・)
根據上面這三個東西我們可以試著寫一個 php
<?php
$cookieName = 'number';
if(!isset($_COOKIE[$cookieName])) { //判斷 COOKIE 是否存在
setcookie($cookieName, 0, time() + 100); //設定 COOKIE,保存期限為 100 秒
} else {
setcookie($cookieName, $_COOKIE[$cookieName]+1, time() + 100); //更改 COOKIE 值
}
echo '現在數到 '.$_COOKIE[$cookieName];
?>
<form action="test.php" method="post">
<input type="submit" name="submit" value="+1">
</form>
結果會像這樣,只要一直按+,數值就會一直增加。可以試著拿掉 Cookie ,會發現永遠只會數到 1 喔。
不過 Cookie 也是有缺點的
第一點來做點示範好了,用上面那段程式碼當例子
史蒂夫和戴夫的老師要他們在一天內把數字點到一萬。
史蒂夫回家馬上開始點,戴夫則是在研究今天的晚餐要吃什麼。
史蒂夫點到 2000 正在懷疑人生,戴夫點下 F12 並修改 Cookie 到一萬
史蒂夫正在做 SAN 值檢定,戴夫在點一下 +1 完成作業後,去看貓咪影片
第三點我想用一篇文章來介紹一下商人如何優雅地吃人肉,應該會是 Day 26 的文章,比較偏向經濟學方面了,這就是斜槓嗎
既然 Cookie 會被竄改,當然也有解決的方法囉。不過就留到 Day 25 了。